উদাহরণ সহ RowMapper এর ব্যবহার

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ RowMapper এবং BeanPropertyRowMapper |
63
63

RowMapper স্প্রিং জেডিবিসি (Spring JDBC)-তে ব্যবহৃত একটি ইন্টারফেস, যা ডাটাবেস থেকে প্রাপ্ত রেকর্ডকে কাস্টম অবজেক্টে ম্যাপ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের একটি রো-কে জাভা অবজেক্টে রূপান্তর করার জন্য খুবই কার্যকর।


RowMapper ব্যবহার করার উপায়

Syntax:

@FunctionalInterface
public interface RowMapper<T> {
    T mapRow(ResultSet rs, int rowNum) throws SQLException;
}

RowMapper ইন্টারফেসের একটি mapRow() মেথড আছে, যা ডাটাবেস থেকে প্রতিটি রেকর্ডকে প্রসেস করে এবং জাভা অবজেক্ট তৈরি করে।


উদাহরণ সহ ব্যাখ্যা

উদাহরণ: RowMapper ব্যবহার করে একটি টেবিল থেকে ডেটা পড়া

1. ডাটাবেস টেবিল:

ধরুন, আমাদের একটি users নামক টেবিল আছে:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255)
);
2. User ক্লাস তৈরি করুন:
public class User {
    private int id;
    private String name;
    private String email;

    // Constructor
    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", email='" + email + '\'' +
               '}';
    }
}
3. RowMapper ব্যবহার করে ডেটা ফেচ করা:
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

@Service
public class UserService {
    private final JdbcTemplate jdbcTemplate;

    public UserService(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public List<User> getAllUsers() {
        String sql = "SELECT * FROM users";
        
        // Using RowMapper
        return jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                return new User(
                    rs.getInt("id"),
                    rs.getString("name"),
                    rs.getString("email")
                );
            }
        });
    }
}
4. Lambda দিয়ে সহজ পদ্ধতিতে RowMapper:

RowMapper-এর lambda এক্সপ্রেশন ব্যবহার করা যেতে পারে:

public List<User> getAllUsers() {
    String sql = "SELECT * FROM users";
    return jdbcTemplate.query(sql, (rs, rowNum) -> new User(
        rs.getInt("id"),
        rs.getString("name"),
        rs.getString("email")
    ));
}

একটি নির্দিষ্ট রেকর্ড পড়ার জন্য RowMapper:

ধরুন, আমরা একটি নির্দিষ্ট id এর ভিত্তিতে User পড়তে চাই:

public User getUserById(int id) {
    String sql = "SELECT * FROM users WHERE id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) -> new User(
        rs.getInt("id"),
        rs.getString("name"),
        rs.getString("email")
    ));
}

কাস্টম RowMapper তৈরি করা (Reusable):

আপনার যদি একই টেবিলের জন্য বারবার RowMapper ব্যবহার করতে হয়, তাহলে কাস্টম RowMapper তৈরি করুন:

CustomUserRowMapper:
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CustomUserRowMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        return new User(
            rs.getInt("id"),
            rs.getString("name"),
            rs.getString("email")
        );
    }
}
ব্যবহার:
public List<User> getAllUsers() {
    String sql = "SELECT * FROM users";
    return jdbcTemplate.query(sql, new CustomUserRowMapper());
}

সম্পূর্ণ উদাহরণ:

Main Application:
@SpringBootApplication
public class SpringJdbcExampleApplication {
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(SpringJdbcExampleApplication.class, args);
        UserService userService = context.getBean(UserService.class);

        // Add some users
        userService.addUser("Alice", "alice@example.com");
        userService.addUser("Bob", "bob@example.com");

        // Get all users
        List<User> users = userService.getAllUsers();
        users.forEach(System.out::println);

        // Get user by ID
        User user = userService.getUserById(1);
        System.out.println(user);
    }
}

উপসংহার:

  1. RowMapper-এর মাধ্যমে জাভা অবজেক্ট এবং ডাটাবেস টেবিলের রো-র মধ্যে ম্যাপিং সহজ হয়।
  2. এটি কাস্টম ম্যাপিং করার সুবিধা দেয়।
  3. Reusable RowMapper তৈরি করে কোড আরও ক্লিন এবং মেইনটেইনেবল করা যায়।
Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion